/**
 * 格式化输出时间
 * @param {Object} fmt
 */
Date.prototype.format = function(fmt) {
	var o = {
		"M+" : this.getMonth() + 1, //月份 
		"d+" : this.getDate(), //日 
		"h+" : this.getHours(), //小时 
		"m+" : this.getMinutes(), //分 
		"s+" : this.getSeconds(), //秒 
		"q+" : Math.floor((this.getMonth() + 3) / 3), //季度 
		"S" : this.getMilliseconds() //毫秒 
	};
	if (/(y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
				.substr(4 - RegExp.$1.length));
	}
	for ( var k in o) {
		if (new RegExp("(" + k + ")").test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
					: (("00" + o[k]).substr(("" + o[k]).length)));
		}
	}
	return fmt;
}

/**
 * 获取date所在天的开始时间
 * @param date
 * @returns
 */
function getDayStart(date) {
	if (!(date instanceof Date)) {
		return false;
	} 
	var dateFormat = date.format("yyyy-MM-dd");
	return new Date(dateFormat + ' 00:00:00');
}

/**
 * 获取date所在天的结束时间
 * @param date
 * @returns
 */
function getDayEnd(date) {
	if (!(date instanceof Date)) {
		return false;
	} 
	var dateFormat = date.format("yyyy-MM-dd");
	return new Date(dateFormat + ' 23:59:59');
}

/**
 * 获取date所在月的第一天
 * @param date
 * @returns {Date}
 */
function getMonthStartDay(date){
	var year = date.getFullYear();
	var month = date.getMonth();
	return new Date(year, month, 1);
}

/**
 * 获取date所在月的第一天开始时间
 * @param date
 * @returns {Date}
 */
function getMonthStartDate(date){
	var year = date.getFullYear();
	var month = date.getMonth();
	return getDayStart(new Date(year, month, 1));
}

/**
 * 获取date所在月的最后一天
 * @param date
 * @returns {Date}
 */
function getMonthEndDay(date){
	var year = date.getFullYear();
	var month = date.getMonth();
	return new Date(year, month+1, 0);
}

/**
 * 获取date所在月的最后一天结束时间
 * @param date
 * @returns {Date}
 */
function getMonthEndDate(date){
	var year = date.getFullYear();
	var month = date.getMonth();
	return getDayEnd(new Date(year, month+1, 0));
}